#ifndef MouseAndCat_MouseHook_h
#define MouseAndCat_MouseHook_h

#include "Events.h"
#include "HookBase.h"

class MouseHook: public HookBase
{
public:
	MouseHook();
    void SetMouseEventCallback(void (*pf) (MouseEvent eventType, uint timestamp, short x, short y, short wheelDelta));
	bool Start();
	LRESULT CALLBACK LowLevelMouseCallback_(int, WPARAM, LPARAM);

private:

	static const unsigned short USAGE_PAGE_STD_INPUT = 0x01;
	static const unsigned short USAGE_MOUSE = 0x02;
	static const unsigned short USAGE_KEYBOARD = 0x06;

	long doubleClickTimeAsTicks_; // There are 10,000 ticks per millisecond. We'll translate to ticks when we startup so we don't have to keep making the transition between ticks and milliseconds.
    long leftButtonLastDown_;
	//RAWINPUTDEVICE mouse_;
	//RAWINPUTDEVICE* devices_;
};

#endif
